#ifndef BASEMODEL_DEVICE_RESPONSE_H
#define BASEMODEL_DEVICE_RESPONSE_H

#include "../common.h"

// UDP连接配置信息
typedef struct {
    string_t server;            // UDP服务器地址
    int32_t port;               // UDP端口号
    encryption_t encryption;    // 加密方式，如"aes-128-ctr"
    key_t key;                  // 加密密钥
    nonce_t nonce;              // 加密随机数
} udp_config_t;

// 音频参数配置（响应中的）
typedef struct {
    int32_t channels;           // 音频声道数
    format_t format;            // 音频格式，如"opus"
    int32_t frame_duration;     // 音频帧时长（毫秒）
    int32_t sample_rate;        // 采样率
} audio_params_resp_t;

// Hello响应消息 - 服务器对Hello请求的响应
typedef struct {
    msg_type_t type;                    // 消息类型，固定为MSG_TYPE_HELLO
    int32_t version;                    // 协议版本
    transport_t transport;              // 传输协议类型
    audio_params_resp_t audio_params;   // 音频参数配置
    session_id_t session_id;            // 分配的会话ID
    bool has_udp;                       // 是否包含UDP配置
    udp_config_t udp;                   // UDP配置（仅当transport为"udp"时存在）
} hello_resp_t;

// TTS（文本转语音）响应消息
typedef struct {
    msg_type_t type;            // 消息类型，固定为MSG_TYPE_TTS
    session_id_t session_id;    // 会话ID
    tts_state_t state;          // TTS状态枚举
    bool has_text;              // 是否包含文本内容
    text_t text;                // 可选的文本内容
    bool has_sample_rate;       // 是否包含采样率
    int32_t sample_rate;        // 可选的采样率（当state为start时）
} tts_resp_t;

// STT（语音转文本）响应消息
typedef struct {
    msg_type_t type;            // 消息类型，固定为MSG_TYPE_STT
    session_id_t session_id;    // 会话ID
    text_t text;                // 识别出的文本内容
} stt_resp_t;

// LLM（大语言模型）响应消息
typedef struct {
    msg_type_t type;            // 消息类型，固定为MSG_TYPE_LLM
    session_id_t session_id;    // 会话ID
    text_t text;                // LLM生成的文本内容（可能是表情符号）
    emotion_t emotion;          // 情感状态：happy、thinking等
} llm_resp_t;

#endif // BASEMODEL_DEVICE_RESPONSE_H
